#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys,getopt
import pandas
import re

def main(argv):
	infile = ''
	stat = {}
	reasons = ['存储问题','个人工作饱和','个性化分析要求','合并分析','集群节点问题','客户方案问题','流程问题','其他/待定','人为失误（漏单或其他）','数据拷贝转移','数据量大/大项目','网络问题','未延期','问题项目核查','系统问题','周末/节假日影响']
#	weeks = ['第41周','第42周','第43周','第44周','第45周']
	
	seq_analysis = {}
	analysis = {}
	
	
	### 1.参数判断
	opts,args = getopt.getopt(argv,"hi:",["help","infile="])
	for opt,arg in opts:
		if opt in ('-h',"--help"):
			print('qc_stat.py -i <file>')
			print('用于QC中延期项目数据统计分析，以便知道QC改进工作')
			sys.exit()
		elif opt in ("-i","--infile"):
			infile = arg
		
	print('输入list为 ：',infile)
#	sys.exit()
	

	### 2.读取excel文件，对每一个excel进行操作
	raw_sheet_data = pandas.read_excel(infile,sheet_name='终版（子项目维度）')
#	raw_sheet_data = pandas.read_excel('子项目维度交付监控20201110-SZ-finalized-V2.1.xlsx',sheet_name='终版（子项目维度）')
	weeks = raw_sheet_data['结题周'].sort_values().drop_duplicates().to_list()
#	reasons = raw_sheet_data['信息分析延期原因归类'].drop_duplicates().to_list()	
	
	print("结题周\t总数\t延期数\t理论延期数\t",end='')
	for reason in reasons :
		print(reason+"\t",end='')
	print("\n")
	
	
	clean_data_delay=raw_sheet_data[(raw_sheet_data['是否蛋白产品'] == '非蛋白产品') & (raw_sheet_data['测序平台大类'] == '自主平台') & (raw_sheet_data['是否纳入分析'] == '纳入分析') &(raw_sheet_data['子项目是否延期']=='延期')]
	clean_data_delay_count=clean_data_delay['子项目编号'].groupby([clean_data_delay['结题周'],clean_data_delay['信息分析延期原因归类']]).count()
	for week in weeks:
		seq_analysis_data=raw_sheet_data[(raw_sheet_data['结题周']==week) & (raw_sheet_data['是否蛋白产品'] == '非蛋白产品') & (raw_sheet_data['测序平台大类'] == '自主平台') & (raw_sheet_data['是否纳入分析'] == '纳入分析')]
		seq_analysis_data_total=seq_analysis_data['子项目编号'].count()
		seq_analysis_data_delay=seq_analysis_data[seq_analysis_data['子项目是否延期']=='延期']
		seq_analysis_data_delay_count=seq_analysis_data_delay['子项目编号'].count()
		seq_analysis_data_expect=seq_analysis_data_total*0.15
		print(week,end='')
		print("\t",end='')
		print(seq_analysis_data_total,end='')
		print("\t",end='')
		print(seq_analysis_data_delay_count,end='')
		print("\t",end='')
		print(seq_analysis_data_expect,end='')
		print("\t",end='')

		
		for reason in reasons:
			if reason in clean_data_delay_count[week]:	
				if clean_data_delay_count[week][reason] :
					print(str(clean_data_delay_count[week][reason]),end='')
					print("\t",end='')
				else:
					print("0\t",end='')
			else:
				print("0\t",end='')

		print("\n")
	
	
#	seq_analysis_data=raw_sheet_data[raw_sheet_data['结题周']=='第45周']
#	seq_analysis_data = raw_sheet_data[(raw_sheet_data['结题周']=='第45周') & (raw_sheet_data['是否蛋白产品']=='非蛋白产品') & (raw_sheet_data['测序平台大类']=='自主平台') & (raw_sheet_data['是否纳入分析']=='纳入分析')]
#	seq_analysis_data_delay=seq_analysis_data[seq_analysis_data['子项目是否延期']=='延期']
#	delay_count=seq_analysis_data_delay['子项目编号'].groupby(seq_analysis_data_delay['信息分析延期原因归类']).count()
#	print(seq_analysis_data_delay)
#	print(delay_count)
	
#	clean_data_delay=raw_sheet_data[(raw_sheet_data['是否蛋白产品'] == '非蛋白产品') & (raw_sheet_data['测序平台大类'] == '自主平台') & (raw_sheet_data['是否纳入分析'] == '纳入分析') &(raw_sheet_data['子项目是否延期']=='延期')]
#	clean_data_delay_count=clean_data_delay['子项目编号'].groupby([clean_data_delay['结题周'],clean_data_delay['信息分析延期原因归类']]).count()
#	print(clean_data_delay_count['第45周']['个性化分析要求'])
#	print(clean_data_delay_count)
#	for week in weeks:
#		print(week)
#		seq_analysis_data = raw_sheet_data[(raw_sheet_data['结题周']==week) & (raw_sheet_data['是否蛋白产品'] == '非蛋白产品') & (raw_sheet_data['测序平台大类'] == '自主平台') & (raw_sheet_data['是否纳入分析'] == '纳入分析')]
#		seq_analysis_data_delay=seq_analysis_data[seq_analysis_data['子项目是否延期']=='延期']
#		delay_count=seq_analysis_data_delay['子项目编号'].groupby(seq_analysis_data_delay['信息分析延期原因归类']).count()
#		print(delay_count)
	
	#dict_sheet_data = raw_sheet_data.to_dict(orient='records')
	
	
	

if __name__ == "__main__":
	main(sys.argv[1:])


### 读取excel文件
## 需要解决的问题，怎么获得excel的sheet数；
## 讲获取的excel数据转换为字典
## 各种意外情况是否可以获取到数据
# 隐藏行，隐藏列，多个sheet


### 整合信息

### 写入excel文件